home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / graphics / ilib_vb / imglib30.txt < prev    next >
Text File  |  1995-10-21  |  30KB  |  626 lines

  1.  
  2. For VB Information please read VBIMGLIB.TXT
  3.  
  4. ImageLib DLL 3.0(c) 1995 by:
  5.  
  6. SkyLine Tools
  7.  
  8. C++ Info 
  9.  
  10. Technical support  for C, C++, Kevin Adams:  (CIS) 74742,1444
  11.  
  12. The Imglib30.dll is an inexpensive way to add JPEG, GIF, BMP, PCX and PNG
  13. graphic formats to your applications. Yes, there are image libraries
  14. supporting many more formats than image lite, but those libraries are more
  15. expensive and carry more overhead to your applications.  The image lite DLL
  16. supports the reading and writing of JPEG, GIF, BMP, PCX, and PNG images
  17. from memory or from a file. The Image Lite DLL supports the use of an optional
  18. callback function in the calling application.  The callback can provide
  19. progress displaying of read and write functions and the ability to cancel
  20. read functions in progress. The DLL also provides functions to retrieve 
  21. information about an image in memory or in a file without reading the whole
  22. image.  The functions return type of image, compression, width, height,
  23. bits per pixel, number of planes, and number of colors.  The memory functions
  24. of the Image Lite DLL are specifically designed to support database BLOB
  25. operations.  All calls return error codes and the DLL will optional display
  26. error messages.  The error codes refer to error text strings located in
  27. a string table resource inside the DLL.  The DLL supports Device Dependent
  28. Bitmaps(DDB) or Device Independent Bitmaps(DIB) in the reading and writing
  29. of images. The Image Lite DLL contains a sophisticated color quantization
  30. engine that can be used when reading and writing images.  When reading an image,
  31. settings can be used so that the bitmap that is returned is of the resolution
  32. you specify and is independent of the input image.  If the developer wants all
  33. images to be passed back as 256 color 8 bit dithered images then all bitmaps 
  34. passed back will be 8 bit whether they where originally 24 bit or 4 bit.  The
  35. color quantizer is designed to produce the best image possible at the desired
  36. resolution.  When writing an image the developer may specify the resolution of
  37. the image to be written and the image will be that be written (if that resolution
  38. is valid for the image type) at that resolution.   
  39.  
  40.  
  41. The examp30.zip file includes
  42.  
  43. Examp30.IDE          Project file for Borland C++ OWL2 examples
  44. IMAGEVW.CPP          Main file for example showing image memory I/O with DDB's
  45. IMGVW2.CPP           Main file for example showing image file I/O with DDB's
  46. IMGDIBVW.CPP         Main file for example showing image memory I/O with DIB's
  47. IMDIBVW2.CPP         Main file for example showing image file I/O with DIB's
  48. IMAGEVW .RC          Resource file for all examples
  49. IMGLIB30.LIB         Import Lib file for DLL  
  50. IMGLIB30.H           Header File for DDB DLL calls
  51. IMGDIB.H             Header File for DIB DLL calls
  52. VIEWDLG .CPP         Source file for Dialog boxes for examples 
  53. IMAGEVW.H            Header file for all examples   
  54. VIEWDLG.H            Header file for Dialog Boxes 
  55. IMAGEVW.DEF          
  56. IMGLIB30.DLL         Image Lite DLL 3.0
  57.  
  58. Installation Instructions
  59.  
  60. Copy the imglib30.dll  to a directory on your path or
  61. to the windows\system directory.
  62.  
  63. Image Formats Supported:
  64.  
  65. JPEG 
  66. GIF
  67. PCX 
  68. BMP
  69. PNG
  70.  
  71. Installation Instructions for the Examples
  72.  
  73. The examples will read and write PNG, JPG, GIF, PCX, and BMP format files.
  74. The four examples look identical and perform the same things using different
  75. sets of calls from the DLL.  You can compile and run the examples by loading
  76. the project file in Borland C++ 4.5 (It would probably also work for 4.0 or above)
  77. and rebuild it.  NOTE:  Remember to check the Project settings to ensure you
  78. have the right directories for the Borland Compiler.
  79.  
  80. Color Quantizer
  81.  
  82. The color quantizer is used to reduce an image to a lower bit depth with out
  83. loosing as much quality as possible.  The color quantizer will analysis the input
  84. image and produce an optimized color palette using the maximum number of colors
  85. allowed for the output bit depth.  The color quantizer will then reduce the input
  86. image by mapping the input image pixels to the output image pixels through the 
  87. optimize color palette.  This can be done with dithering or without dithering.  
  88. In most cases dithering produces better results.  Input images that have a bit
  89. depth of 8 or higher can be reduced.  Input images of 1 to 4 bits will not be 
  90. reduced.  The reduction options are:
  91.  
  92.    24 bit 16.7 million color to 8 bit 256 color
  93.    24 bit 16.7 million color to 4 bit 16 color
  94.    8 bit 256 color to 4 bit 16 color
  95.  
  96. Note that the 16 color output image is uses an optimized color palette based on
  97. the input image and not the windows system palette.  This means that with VGA 
  98. modes the 16 color output may not look good because the optimize 16 color 
  99. palette does not match the windows system palette.
  100.  
  101. DLL Calls
  102.  
  103. There are four different calls that essential do the same thing but either
  104. take their input differently or provide their output differently.  The first
  105. set will be described individually, but afterwards all four in a set will be
  106. listed followed by one description.
  107. ______________________________________________________________________________
  108.  
  109. int readjpgfile(const char *filename, int resolution, int scale, int dither,
  110.                 int password, unsigned int * hddb, unsigned int * hpal,
  111.                 short (*pf) (int), short errormode);
  112.  
  113. This function is passed a filename of a JPG file; integer for resolution, scale,
  114. option, and password and returns unsigned integer pointers (Handles) to a
  115. HBITMAP and a HPALETTE to the resulting bitmap and palette.  It returns
  116. one on success or a negative integer indicating an error code on failure.
  117. The errormode parameter indicates whether or not the DLL will display error
  118. messages internally.  If the input JPG file contains a Grayscale image then
  119. the resolution and option input parameters will be automatically over-ridden.
  120.  
  121. resolution            4:  4 bit    (16 colors)
  122.                 8:  8 bit   (256 colors)
  123.                 24: 24 bit  (16 Million colors)
  124.  
  125. scale                1:  1/1 normal size
  126.                 2:  1/2 size    
  127.                 4:  1/4 size
  128.                 8:  1/8 size
  129.  
  130. dither                          0:  No dithering
  131.                                 1:  Dither
  132.  
  133. password            When you purchase you will receive this.
  134.                 Disables Trial Version messages.
  135.  
  136. hddb                Pointer to bitmap handle
  137.  
  138. hpal                Pointer to palette handle
  139.  
  140. pf                Pointer to a callback function defined as:
  141.                      short pf (int);
  142.  
  143. errormode                       0 : Do not show error messages in DLL
  144.                                 1 : Display error messages in DLL
  145.                 
  146. Callback Notes:  If no callback function is defined then pass NULL for pf.
  147.                  If a callback function is used then the function will be called
  148.                  periodically with an integer input value containing a value
  149.                  between 0 and 100 denoting how much of the current operation has
  150.                  been completed.  The application's callback function must return
  151.                  a short value indicating status.  A return of 1 means to continue
  152.                  with the function and a return of 0 means to cancel the
  153.                  function.  If the function gets back a 0 it will cancel the
  154.                  reading of the image and return a valid bitmap and palette handle
  155.                  containing as much of the image that was complete before being
  156.                  canceled.  The read function will still return a one value
  157.                  even if the function was canceled via the callback.
  158.  
  159. Errormode Notes: All of the DLL calls will return a 1 for success or a negative
  160.                  number that is an error code.   All of the error codes have
  161.                  text string equivalents located in a string table resource
  162.                  inside of the DLL.  The first example imgview illustrates how
  163.                  to access the strings.  If you want to control what error
  164.              messages are displayed to the user the use 0 so that the DLL
  165.                  will not automatically display error messages.
  166. _____________________________________________________________________________
  167.  
  168. int rdjpgfiledib(const char *filename, int resolution, int scale, int dither,
  169.                 int password, unsigned int *hdib, short (*pf) (int),
  170.                 short errormode);
  171.  
  172. This function is the same as the "readjpgfile" function except that it return
  173. a pointer to a DIB (hdib) HANDLE rather that a pointer to a DDB and palette HANDLE.
  174.  
  175. hdib             Pointer to a DIB handle.
  176. ______________________________________________________________________________
  177.  
  178.  
  179. int readjpgstream(void * inbuffer, long size, int resolution, int scale,
  180.                   int dither, int password, unsigned int * hddb, unsigned int * hpal,
  181.                   short (*pf) (int), short errormode);
  182.  
  183.  
  184. This function is the equivalent to the "readjpgfile" function above except that
  185. input is from a pointer to a global memory location that contains a JPEG image
  186. and the size input parameter contains the size of the JPEG image in bytes.  
  187.  
  188. inbuffer            A pointer to a memory location that contain the input image.
  189.                     The memory location should have preferably been globally
  190.                     allocated.
  191.  
  192. size                This is a long value containing the number of bytes in
  193.                     the buffer.
  194. _____________________________________________________________________________
  195.  
  196. int rdjpgstreamdib(void * inbuffer, long size, int resolution, int scale,
  197.                   int dither, int password, unsigned int * hdib,
  198.                   short (*pf) (int), short errormode);
  199.  
  200. This is the same as the "readjpgstream" except it returns a pointer to a DIB
  201. HANDLE rather than a DDB and Palette HANDLE.
  202. _____________________________________________________________________________
  203.  
  204. int writejpegfile(const char * filename,  int quality, int smooth, int password,
  205.                   unsigned int hddb, unsigned int hpal, short (*pf)(int),
  206.                   short errormode);
  207.  
  208. int writejpegstream(void * inbuffer, long * size,  int quality, int smooth,
  209.                    int password, unsigned int hddb, unsigned int hpal,
  210.                    short (*pf)(int), short errormode);
  211.  
  212. int wrjpegfiledib(const char * filename,  int quality, int smooth, int password,
  213.                   unsigned int hdib, short (*pf)(int), short errormode);
  214.  
  215. int wrjpegstreamdib(void * inbuffer, long * size,  int quality, int smooth,
  216.                     int password, unsigned int hdib, short (*pf)(int),
  217.                     short errormode);
  218.  
  219. These functions are passed a filename or a pointer to a buffer or size to write a
  220. JPEG image to.  The inputs are either HANDLES to a DDB and logical palette or 
  221. a HANDLE to a DIB.  The quality and smooth parameters describe the amount of 
  222. compression and any smoothing desired.  Output size of the file or memory stream 
  223. is based on the size input and the value of the quality parameter.  
  224.  
  225. filename                A pointer to a string containing a name and path of 
  226.                         output file.
  227.  
  228. inbuffer                A pointer to a memory location where the output image
  229.                         will be written.
  230.  
  231. size                    A pointer to a long value that will indicate on return
  232.                         how much of the memory location was actually used to
  233.                         store the output image.
  234.  
  235. quality         0..100   
  236.             0 is poor and 100 excellent.  We  normally use
  237.                         75 to have a reasonable quality with 1/10 savings
  238.                         in size from 24-bit data.
  239.  
  240. smooth            0..100    
  241.             0 is no smoothing  and 100  is full smoothing. 
  242.  
  243. password        Purchase
  244.  
  245. hddb            Device Dependent Bitmap handle (not a pointer!)
  246.  
  247. hpal            Logical Palette handle (not a pointer!)
  248.  
  249. hdib                    Device Independent Bitmap handle(not a pointer!)
  250.  
  251. pf            Pointer to a callback function defined as:
  252.              short pf (int);
  253.                 
  254. Callback Notes:  For write functions the callback return value is not used.
  255.                  It is not possible to cancel a write function.
  256. ______________________________________________________________________________
  257.  
  258. int readgiffile(const char *filename, int resolution, int password, int dither,
  259.                 unsigned int * hddb, unsigned int * hpal, short (*pf)(int),
  260.                 short errormode);
  261.  
  262. int readgifstream(void * inbuffer, long size, int resolution, int dither,
  263.                   int password, unsigned int * hddb, unsigned int * hpal,
  264.                   short(*pf)(int), short errormode);
  265.  
  266. int rdgiffiledib(const char *filename, int resolution, int dither, 
  267.                  int password, unsigned int * hddb, unsigned int * hpal,
  268.                  short (*pf)(int), short errormode);
  269.  
  270. int rdgifstreamdib(void * inbuffer, long size, int resolution, int dither,
  271.                    int password, unsigned int * hddb, unsigned int * hpal,
  272.                    short(*pf)(int), short errormode);
  273.  
  274. These functions take as input a file or memory stream pointing to a GIF image.
  275. It returns pointers to a bitmap Handle and a palette Handle or a DIB Handle.
  276. A return value of one is success,  a negative number is failure and refers
  277. to an error code.  The bitmap returned will be based on the resolution and
  278. dither parameters.  The output will have a bit depth equal to the resolution
  279. no matter what the input resolution is.  The Dither parameter indicates to
  280. use dithering if the color quantitization engine is going to reduce the bit
  281. depth of the input image. Interlaced and non-interlaced GIF images are 
  282. supported.
  283.  
  284. filename                A pointer to a string containing a name and path of 
  285.                         output file.
  286.  
  287. inbuffer                A pointer to a memory location that contains the input image.
  288.                         The memory location should have preferably been globally
  289.                         allocated.
  290.  
  291. size                    This is a long value containing the number of bytes in
  292.                         the buffer.
  293.  
  294. resolution        4:  4 bit    (16 colors)
  295.             8:  8 bit   (256 colors)
  296.                         24: 24 bit   (16.7 million colors)
  297.  
  298. dither                  0:  No dithering
  299.                         1:  Dither
  300.  
  301. password        When you buy you will receive this.
  302.             Disables Trial Version messages.
  303.  
  304. hddb            Pointer to bitmap handle
  305.  
  306. hpal            Pointer to palette handle
  307.  
  308. pf            Pointer to a callback function defined as:
  309.              short pf (int);
  310.  
  311. errormode               0 : Do not show error messages in DLL
  312.                         1 : Display error messages in DLL
  313.  
  314. ______________________________________________________________________________
  315.  
  316. int writegiffile(const char * filename,  int resolution, int password,
  317.                  unsigned int hddb, unsigned int hpal, short (*pf)(int),
  318.                  short errormode);
  319.  
  320. int writegifstream(void * inbuffer, long * size,  int resolution, 
  321.                    int password, unsigned int hddb, unsigned int hpal,
  322.                    short (*pf)(int), short errormode);
  323.  
  324. int wrjgiffiledib(const char * filename,  int resolution, int password,
  325.                   unsigned int hdib, short (*pf)(int), short errormode);
  326.  
  327. int wrgifstreamdib(void * inbuffer, long * size,  int resolution,
  328.                    int password, unsigned int hdib, short (*pf)(int),
  329.                    short errormode);
  330.  
  331. These functions are passed a filename or a pointer to a buffer or size to write a
  332. GIF image to.  The inputs are either HANDLES to a DDB and logical palette or 
  333. a HANDLE to a DIB.  The resolution parameter describes the bit depth of the output
  334. image.  For GIF images a 24 bit output bit depth is invalid. Output size of the file
  335. or memory stream is based on the size input and the value of the resolution
  336. parameter.  The input bitmap's bit depth will be raised or lowered as necessary
  337. according to the resolution parameter. Output image is not interlaced.
  338.  
  339. filename                A pointer to a string containing a name and path of 
  340.                         output file.
  341.  
  342. inbuffer                A pointer to a memory location where the output image
  343.                         will be written.
  344.  
  345. size                    A pointer to a long value that will indicate on return
  346.                         how much of the memory location was actually used to
  347.                         store the output image.
  348.  
  349. resolution        4:  4 bit    (16 colors)
  350.             8:  8 bit   (256 colors)
  351.                         24: 24 bit   (16.7 million colors) (Invalid for GIF!)
  352.  
  353. password        Buy
  354.  
  355. hddb            Device Dependent Bitmap handle (not a pointer!)
  356.  
  357. hpal            Logical Palette handle (not a pointer!)
  358.  
  359. hdib                    Device Independent Bitmap handle(not a pointer!)
  360.  
  361. pf            Pointer to a callback function defined as:
  362.              short pf (int);
  363.  
  364. errormode               0 : Do not show error messages in DLL
  365.                         1 : Display error messages in DLL
  366.  
  367. ______________________________________________________________________________
  368.  
  369. int readpcxfile(const char *filename, int resolution, int password, int dither,
  370.                 unsigned int * hddb, unsigned int * hpal, short (*pf)(int),
  371.                 short errormode);
  372.  
  373. int readpcxstream(void * inbuffer, long size, int resolution, int dither,
  374.                   int password, unsigned int * hddb, unsigned int * hpal,
  375.                   short(*pf)(int), short errormode);
  376.  
  377. int rdpcxfiledib(const char *filename, int resolution, int dither, 
  378.                  int password, unsigned int * hddb, unsigned int * hpal,
  379.                  short (*pf)(int), short errormode);
  380.  
  381. int rdpcxstreamdib(void * inbuffer, long size, int resolution, int dither,
  382.                    int password, unsigned int * hddb, unsigned int * hpal,
  383.                    short(*pf)(int), short errormode);
  384.  
  385. These functions take as input a file or memory stream pointing to a PCX image.
  386. It returns pointers to a bitmap Handle and a palette Handle or a DIB Handle.
  387. A return value of one is success,  a negative number is failure and refers
  388. to an error code.  The bitmap returned will be based on the resolution and
  389. dither parameters.  The output will have a bit depth equal to the resolution
  390. no matter what the input resolution is.  The Dither parameter indicates to
  391. use dithering if the color quantitization engine is going to reduce the bit
  392. depth of the input image. 
  393.  
  394. ______________________________________________________________________________
  395.  
  396. int writepcxfile(const char * filename,  int resolution, int password,
  397.                  unsigned int hddb, unsigned int hpal, short (*pf)(int),
  398.                  short errormode);
  399.  
  400. int writepcxstream(void * inbuffer, long * size,  int resolution, 
  401.                    int password, unsigned int hddb, unsigned int hpal,
  402.                    short (*pf)(int), short errormode);
  403.  
  404. int wrpcxfiledib(const char * filename,  int resolution, int password,
  405.                   unsigned int hdib, short (*pf)(int), short errormode);
  406.  
  407. int wrpcxstreamdib(void * inbuffer, long * size,  int resolution,
  408.                    int password, unsigned int hdib, short (*pf)(int),
  409.                    short errormode);
  410.  
  411. These functions are passed a filename or a pointer to a buffer or size to write a
  412. PCX image to.  The inputs are either HANDLES to a DDB and logical palette or 
  413. a HANDLE to a DIB.  The resolution parameter describes the bit depth of the output
  414. image.  Output size of the file or memory stream is based on the size input
  415. and the value of the resolution parameter.  The input bitmap's bit depth
  416. will be raised or lowered as necessary according to the resolution parameter. 
  417.  
  418. ______________________________________________________________________________
  419.  
  420. int readbmpfile(const char *filename, int resolution, int password, int dither,
  421.                 unsigned int * hddb, unsigned int * hpal, short (*pf)(int),
  422.                 short errormode);
  423.  
  424. int readbmpstream(void * inbuffer, long size, int resolution, int dither,
  425.                   int password, unsigned int * hddb, unsigned int * hpal,
  426.                   short(*pf)(int), short errormode);
  427.  
  428. int rdbmpfiledib(const char *filename, int resolution, int dither, 
  429.                  int password, unsigned int * hddb, unsigned int * hpal,
  430.                  short (*pf)(int), short errormode);
  431.  
  432. int rdbmpstreamdib(void * inbuffer, long size, int resolution, int dither,
  433.                    int password, unsigned int * hddb, unsigned int * hpal,
  434.                    short(*pf)(int), short errormode);
  435.  
  436. These functions take as input a file or memory stream pointing to a BMP image.
  437. It returns pointers to a bitmap Handle and a palette Handle or a DIB Handle.
  438. A return value of one is success,  a negative number is failure and refers
  439. to an error code.  The bitmap returned will be based on the resolution and
  440. dither parameters.  The output will have a bit depth equal to the resolution
  441. no matter what the input resolution is.  The Dither parameter indicates to
  442. use dithering if the color quantitization engine is going to reduce the bit
  443. depth of the input image.  The input BMP image must contain the BITMAPFILEHEADER
  444. part of a BMP at the front before the BITMAPINFOHEADER
  445.  
  446. ______________________________________________________________________________
  447.  
  448. int writebmpfile(const char * filename,  int resolution, int password,
  449.                  unsigned int hddb, unsigned int hpal, short (*pf)(int),
  450.                  short errormode);
  451.  
  452. int writebmpstream(void * inbuffer, long * size,  int resolution, 
  453.                    int password, unsigned int hddb, unsigned int hpal,
  454.                    short (*pf)(int), short errormode);
  455.  
  456. int wrbmpfiledib(const char * filename,  int resolution, int password,
  457.                   unsigned int hdib, short (*pf)(int), short errormode);
  458.  
  459. int wrbmpstreamdib(void * inbuffer, long * size,  int resolution,
  460.                    int password, unsigned int hdib, short (*pf)(int),
  461.                    short errormode);
  462.  
  463. These functions are passed a filename or a pointer to a buffer or size to write a
  464. BMP image to.  The inputs are either HANDLES to a DDB and logical palette or 
  465. a HANDLE to a DIB.  The resolution parameter describes the bit depth of the output
  466. image.  Output size of the file or memory stream is based on the size input
  467. and the value of the resolution parameter.  The input bitmap's bit depth
  468. will be raised or lowered as necessary according to the resolution parameter. 
  469.  
  470. ______________________________________________________________________________
  471.  
  472. int readpngfile(const char *filename, int resolution, int password, int dither,
  473.                 unsigned int * hddb, unsigned int * hpal, short (*pf)(int),
  474.                 short errormode);
  475.  
  476. int readpngstream(void * inbuffer, long size, int resolution, int dither,
  477.                   int password, unsigned int * hddb, unsigned int * hpal,
  478.                   short(*pf)(int), short errormode);
  479.  
  480. int rdpngfiledib(const char *filename, int resolution, int dither, 
  481.                  int password, unsigned int * hddb, unsigned int * hpal,
  482.                  short (*pf)(int), short errormode);
  483.  
  484. int rdpngstreamdib(void * inbuffer, long size, int resolution, int dither,
  485.                    int password, unsigned int * hddb, unsigned int * hpal,
  486.                    short(*pf)(int), short errormode);
  487.  
  488. These functions take as input a file or memory stream pointing to a PNG image.
  489. It returns pointers to a bitmap Handle and a palette Handle or a DIB Handle.
  490. A return value of one is success,  a negative number is failure and refers
  491. to an error code.  The bitmap returned will be based on the resolution and
  492. dither parameters.  The output will have a bit depth equal to the resolution
  493. no matter what the input resolution is.  The Dither parameter indicates to
  494. use dithering if the color quantitization engine is going to reduce the bit
  495. depth of the input image. 
  496.  
  497. ______________________________________________________________________________
  498.  
  499. int writepngfile(const char * filename,  int resolution, int interlaced,
  500.                  int password, unsigned int hddb, unsigned int hpal,
  501.                  short (*pf)(int), short errormode);
  502.  
  503. int writepngstream(void * inbuffer, long * size,  int resolution, int interlaced, 
  504.                    int password, unsigned int hddb, unsigned int hpal,
  505.                    short (*pf)(int), short errormode);
  506.  
  507. int wrpngfiledib(const char * filename,  int resolution, int interlaced, 
  508.                  int password, unsigned int hdib, short (*pf)(int),
  509.                  short errormode);
  510.  
  511. int wrpngstreamdib(void * inbuffer, long * size,  int resolution, int interlaced,
  512.                    int password, unsigned int hdib, short (*pf)(int),
  513.                    short errormode);
  514.  
  515. These functions are passed a filename or a pointer to a buffer or size to write a
  516. PCX image to.  The inputs are either HANDLES to a DDB and logical palette or 
  517. a HANDLE to a DIB.  The resolution parameter describes the bit depth of the output
  518. image.  Output size of the file or memory stream is based on the size input
  519. and the value of the resolution parameter.  The input bitmap's bit depth
  520. will be raised or lowered as necessary according to the resolution parameter. The
  521. interlaced parameter indicated to write an interlaced PNG file when it is one and
  522. a non-interlaced parameter when it is 0.
  523.  
  524. ______________________________________________________________________________
  525.  
  526. int fileinfo(const char * filename, char * filetype, int * width, int * height,
  527.              int * bitspixel, int * planes, int * numcolors, char * compression,
  528.              short errormode);
  529.  
  530. This function takes the filename of an image and returns information about the
  531. image.  This function works with BMP, JPG, GIF, PNG, and PCX images.  It is
  532. not dependent on file extension and will identify if a file is one of the above
  533. image types no matter what the extension is.  If the function cannot
  534. correctly identify a file it will return a negative number indicating and
  535. error code, otherwise a 1.  All of the other parameters are pointer to
  536. variables that will be filled by the function.
  537.  
  538. filetype            This character pointer will contain the type of image
  539.                     contained in the file.
  540.         
  541. width               The width of the image in pixels
  542.  
  543. height            The height of the image in pixels
  544.  
  545. bitspixel        he pixel depth, or bits per pixel, of the image
  546.  
  547. planes            The number of bit planes in the image
  548.  
  549. numcolors        The number of palette entries used by the image.
  550.                     Will be 0 for RGB or true color images.
  551.  
  552. compression         Type of compression used for the image or other useful
  553.                     information.  For JPEG and PNG images this variable will
  554.                     indicate a RGB or Grayscale colorspace type for the image.
  555.  
  556. errormode           0 : do not show errors
  557.                     1 : show errors
  558. ___________________________________________________________________________
  559.  
  560. int streaminfo(void * inbuffer, long size, char * filetype, int * width,
  561.                int * height, int * bitspixel, int * planes, int * numcolors,
  562.                char * compression, short errorcode);
  563.  
  564. This function is similar to the fileinfo function except that is identifies
  565. the type of image that is in the input buffer rather than a file.  It is
  566. recommended that the entire image be in memory when trying to use this function.
  567. While the function may work with a incomplete function because in many cases
  568. it just scans the image header it is not certified to work that way.
  569. ___________________________________________________________________________
  570.  
  571.  
  572. The DLL can also be used with other languages besides C.  There is a Delphi
  573. vcl components available the same DLL.
  574.  
  575. Once you buy ImageLib you will receive a password to access the DLL.
  576. This will eliminate the trial version message.
  577.  
  578. Technical Support and questions:
  579.  
  580. Kevin Adams: compuserve 74742,1444  or   
  581. Internet : 74742,1444@compuserve.com
  582.  
  583.  
  584. Address:
  585.  
  586. SkyLine Tools
  587. Attn: Jan Dekkers
  588. 11956 Riverside Drive 206
  589. North Hollywood CA 91607
  590. Phone 818 766-3900
  591. Fax: 818 766-9027
  592. ________________________________________________________________________________
  593.  
  594. License Agreement
  595.  
  596.  
  597. Rights and Limitations
  598. The software which accompanies this license ("ImageLib") is the property
  599. of SkyLine Tools or its licensers and is protected by copyright law.
  600. By using ImageLib you agree to the terms of this agreement. You may install one
  601. copy of the ImageLib product on a single computer. One copy of ImageLib may be
  602. only used by a single developer at a time.  When ImageLib is being used by
  603. an executable application then there are no licensing fees or royalties
  604. for distribution of the executable and the DLL.  Should any part of ImageLib
  605. be used in a non-compiled application, such as:  a value added VCL, VBX, OCX,
  606. royalties apply.      
  607.  
  608. Limited Warranty
  609. SkyLine Tools warrants that ImageLib will perform substantially in accordance
  610. with the accompanying documentation for a period of (90) days from the date
  611. of receipt.
  612.  
  613. Liabilities 
  614. SkyLine Tools and its licensers entire liability and your exclusive remedy
  615. shall be, at SkyLine Tools option, either return of the price paid,
  616. or repair or replacement of the ImageLib product.
  617.   
  618. Gif and Tiff uses LZW compression which is patented by Unisys. On
  619. CompuServe GO PICS to obtain information about the Unisys patents.
  620. By using ImageLib's GIF Read and Write features you acknowledge that
  621. SkyLine has notified you about the LZW patent and hold SkyLine harmless
  622. from any legal actions.
  623.  
  624. The "JPEG file I/O and compression/decompression" is based in part on the
  625. work of the Independent JPEG Group.
  626.